import java.util.HashMap;

public class Solution {
    public boolean isIsomorphic(String s, String t) {
        // 检查两个字符串长度是否相等
        if (s.length() != t.length()) {
            return false;
        }

        // 创建两个映射表，分别记录字符映射
        HashMap<Character, Character> mapS = new HashMap<>();
        HashMap<Character, Character> mapT = new HashMap<>();

        // 遍历字符串 s 和 t
        for (int i = 0; i < s.length(); i++) {
            char charS = s.charAt(i);
            char charT = t.charAt(i);

            // 如果 s 中的字符已存在映射，且映射不同，返回 false
            if (mapS.containsKey(charS) && mapS.get(charS) != charT) {
                return false;
            }

            // 如果 t 中的字符已存在映射，且映射不同，返回 false
            if (mapT.containsKey(charT) && mapT.get(charT) != charS) {
                return false;
            }

            // 将字符映射添加到映射表中
            mapS.put(charS, charT);
            mapT.put(charT, charS);
        }

        // 如果没有不匹配的情况，返回 true
        return true;
    }

    public static void main(String[] args) {
        Solution solution = new Solution();

        // 示例 1
        System.out.println(solution.isIsomorphic("egg", "add"));  // 输出: true

        // 示例 2
        System.out.println(solution.isIsomorphic("foo", "bar"));  // 输出: false

        // 示例 3
        System.out.println(solution.isIsomorphic("paper", "title"));  // 输出: true
    }
}
